#include <iostream>
#include <string>
#include <fstream>
#include <functional>

#include "compile_run.hpp"
#include "Parse.hpp"
#include "../Comm/Comm.hpp"
#include "../Comm/httplib.h"
void Usage(std::string argv0)
{
    printf("Usage:\n\t%s port\n", argv0.c_str());
}
// 这里通过命令行参数来传递不同的端口号，实现多唯一进程编译
int main(int argc, const char* argv[])
{
    if(argc != 2)
    {
        Usage(argv[0]);
        return 0;
    }

    httplib::Server server;
//使用http协议（基于TCP）构建网络服务  
    server.Post
    (
        "/compile_run", 
        [](const httplib::Request& req, httplib::Response& resp)
        {
            // 拿到请求正文(Json串形式)
            std::string req_json = req.body;
            std::string resp_json;
            // 处理请求正文，并得到响应正文
            if(req_json.empty()) return;
            ns_complie_run::Comp_Run::Start(req_json, resp_json);
            // 将响应正文发送回去
            resp.set_content(resp_json.c_str(), "application/json;charset=utf-8"); // 第一个参数 响应正文部分 ;  第二个参数 响应报头部分
        }
    );
    // 设置监听，只有监听到了才会继续
    server.listen("0.0.0.0", std::stoi(argv[1]));
    
    return 0;
}
